package com.newsmanagement.dao;

import com.newsmanagement.entity.NewsContentEntity;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * @author xbr
 * 2017/12/5
 * 新闻内容操作
 */
@Mapper
public interface INewsContentServiceDao {

    /**
     * 查询内容信息总条数
     * @return int
     */
    @Select("SELECT COUNT(*) FROM news_content_t WHERE DELETE_FLAG = 1")
    int getNewsContentListCount();

    /**
     * 查询内容信息
     * @return List<Map<String ,Object>>
     */
    @Select("SELECT * FROM news_content_t WHERE DELETE_FLAG = 1 ORDER BY ORDER_NUMBER DESC")
    List<Map<String ,Object>> getNewsContentList();

    /**
     * 添加新闻内容信息
     * @param contentTitle 新闻内容标题
     * @param contentTxt 新闻内容
     * @param categoryId 分类id
     * @return 添加的数据条数
     */
    @Insert("INSERT INTO news_content_t(CONTENT_TITLE ,CONTENT_TXT ,CATEGORY_ID ,ORDER_NUMBER) " +
            "VALUES(#{arg0} ,#{arg1} ,#{arg2} ,LAST_INSERT_ID()+1)")
    int addNewsContent(String contentTitle ,String contentTxt ,Integer categoryId);

    /**
     * 修改新闻内容信息
     * @param contentId 新闻内容主键
     * @param contentTitle 新闻内容标题
     * @param contentTxt 新闻内容
     * @param categoryId 分类id
     * @return 添加的数据条数
     */
    @Update("UPDATE news_content_t " +
            "SET " +
            "CONTENT_TITLE = #{arg1} " +
            ",CONTENT_TXT = #{arg2} " +
            ",CATEGORY_ID = #{arg3} WHERE CONTENT_ID = #{arg0}")
    int updateNewsContent(Integer contentId ,String contentTitle ,String contentTxt ,Integer categoryId);

    /**
     * 删除新闻内容信息（逻辑删除）
     * @param contentId 新闻内容主键
     */
    @Update("UPDATE news_content_t SET DELETE_FLAG = 0 WHERE CONTENT_ID = #{arg0}")
    void deleteNewsContent(Integer contentId);

    /**
     * 根据新闻内容id查询对应的新闻内容详情
     * @param contentId 新闻内容id
     * @return Map<String ,Object>
     */
    @Select("SELECT * FROM news_content_t WHERE CONTENT_ID = '%${arg0}%' AND DELETE_FLAG = 1")
    Map<String ,Object> selectNewsContentByContentId(Integer contentId);

    /**
     * 根据关键词模糊搜索新闻列表
     * @param keyword 关键词
     * @return List<Map<String ,Object>>
     */
    @Select("SELECT * FROM news_content_t WHERE CONTENT_TITLE LIKE CONCAT(CONCAT('%', #{arg0}),'%') AND DELETE_FLAG = 1 ")
    List<Map<String ,Object>> selectNewsContentListByKeyword(String keyword);

    /**
     * 根据新闻分类id搜索新闻列表
     * @param categoryId 新闻分类id
     * @return List<Map<String ,Object>>
     */
    @Select("SELECT * FROM news_content_t WHERE CATEGORY_ID = #{arg0} AND DELETE_FLAG = 1 ")
    List<Map<String ,Object>> selectNewsContentListByCategoryId(Integer categoryId);


}
